Android Studio在2.0以后加入了一个很实用的功能:Instant Run
这个功能可以加速我们App的编译,在项目做大了以后,能省去很多时间。早期版本有很多Bug,但是现在已经好多了。今天大概总结一下Instant Run的几个类型。
Instant Run的原理无非就是增量编译,每次编译根据修改的代码决定去重新编译哪些文件,避免每次都从头到尾开始编译。
那么Instant Run的类型也就和编译哪些文件有关。
1.Hot Swap
这种方式是几种类型中最快的一种。使用这种方式编译,App甚至不用重新启动。当我们仅仅修改了方法内部的代码后就会以这种方式重新编译。
2.Warm Swap
这种方式的速度次于Hot Swap,编译完成后App不用重新安装和重新启动,但是需要启动当前的Activity,因此我们会看到屏幕闪了一下。当我们仅仅修改或者删除了一个现有的资源文件时就会以这种形式编译。
3.Cold Swap
这种方式的速度又次于Warm Swap,编译完成后不会生成新的apk,而仅仅只生成一个dex文件,因此不需要重新安装,但需要重新启动,因为需要重新加载这个dex文件,由于这种方式基于multidex机制实现,而Android在5.0以上才使用multidex,因此当目标机是5.0以下时这种方式就不能正常工作。
以下是使用Cold Swap的情况。
添加、删除或修改一个注解
添加、删除或修改一个字段
添加、删除或修改一个方法
添加一个类
修改一个类的继承结构
修改一个类的接口实现
修改一个类的static修饰符
涉及资源文件id的改动
4.Full Swap
这种方式就不用多说了,重新编译整个Apk,然后安装。当以上所有方式都不满足时就到了这一步。
注意,因为Instant Run本身的局限性,其中一些方式不会重新启动App,因此有些初始化代码可能不会被执行,这可能会引起很多问题。
我不清楚这个问题现在解决了没有。
以上总结来自 Android Studio新功能解析,你真的了解Instant Run吗?–郭霖
感谢原作者郭神!